#ifndef GAME_H
#define GAME_H

#include <SDL/SDL.h>
#include <SDL/SDL_mixer.h>
#include "entity.h"
#include "envcomp.h"

/** \file game.h
 */

enum time_stamp {
    DEFAULT = 0,
    ENTITY_1,
    ENTITY_2,
    END_TS
};

/**
 * Estrutura principal do jogo
 * funciona seguindo o paradigma OO
 * funcoes nao contidas em game.c 
 * que a utilizam como argumento
 * deve acessar seus dados ou
 * executar  apenas
 * funcoes especificas (publicas)
 */

typedef struct Game {
    int height; /**< Altura da tela */
    int width; /**< Largura da tela */
    SDL_Surface *screen; /**< Tela principal */
    /* SDL_Event event;  Deu crash aqui dentro */
    int stage; /**< estagio atual do jogo */
    int level; /**< nivel de dificuldade atual */
    /* SDL_Surface *sprite[]; **< objetos graficos do jogo * */
    Entity *entity; /**< entidade */
    /* EnvComp *envComp; < componente de ambiente, substitui por entidade tudo vai ser entidate */
    long unsigned int ticks[END_TS]; /**< usado para testar slice no tempo para as entidades */
    Mix_Music *music, *efect;
} Game;

/** Cria game */
Game *create_game(void);

/** Loop principal */
int game_main_loop(Game *g);

/** Destroy Game *game */
int destroy_game(Game *g);

/** Para jogo chama destroy_game e sai */
int quit_game(Game *);

/** Renderiza o game */
int render_game(Game *g);

#endif

